package py.com.alfa.escriba.gui.rest.services;

import java.io.IOException;
import java.util.List;

import py.com.alfa.escriba.gui.dto.admin.BarrioDTO;
import py.com.alfa.escriba.gui.dto.admin.DepartamentoDTO;
import py.com.alfa.escriba.gui.dto.admin.DistritoDTO;
import py.com.alfa.escriba.gui.dto.admin.FormulariosDTO;
import py.com.alfa.escriba.gui.dto.admin.LocalidadDTO;
import py.com.alfa.escriba.gui.dto.admin.NaturalezasDTO;
import py.com.alfa.escriba.gui.dto.admin.PaisDTO;
import py.com.alfa.escriba.gui.dto.admin.TabRefDTO;
import py.com.alfa.escriba.gui.dto.gestion.MonedasDTO;

public interface ReferenciaService {
	
	final String SECURE_PATH = "/secure";
	final String BASE_URL = "/referencia";
	final String BASE_URL_PAIS = "/pais";
	final String BASE_URL_MONEDA = "/monedas";
	final String BASE_URL_NATURALEZA = "/naturalezas";
	final String BASE_URL_FORMULARIO = "/formularios";
	
	final String LIST_DEPARTAMENTOS  = SECURE_PATH.concat(BASE_URL.concat("/obtenerDepartamentos"));
	final String GET_DEPARTAMENTO    = SECURE_PATH.concat(BASE_URL.concat("/obtenerDepartamento/{idDepartamento}"));
	final String CREA_DEPARTAMENTO   = SECURE_PATH.concat(BASE_URL.concat("/crearDepartamento"));
	final String UPD_DEPARTAMENTO    = SECURE_PATH.concat(BASE_URL.concat("/actualizarDepartamento"));
	final String DEL_DEPARTAMENTO    = SECURE_PATH.concat(BASE_URL.concat("/eliminarDepartamento"));

	final String LIST_DISTRITOS   = SECURE_PATH.concat(BASE_URL.concat("/obtenerDistritos/{idDepartamento}"));
	final String GET_DISTRITO     = SECURE_PATH.concat(BASE_URL.concat("/obtenerDistrito/{idDistrito}"));
	final String CREA_DISTRITO    = SECURE_PATH.concat(BASE_URL.concat("/crearDistrito"));
	final String UPD_DISTRITO     = SECURE_PATH.concat(BASE_URL.concat("/actualizarDistrito"));
	final String DEL_DISTRITO     = SECURE_PATH.concat(BASE_URL.concat("/eliminarDistrito"));

	final String LIST_BARRIOS = SECURE_PATH.concat(BASE_URL.concat("/obtenerBarrios/{idDistrito}"));
	final String CREA_BARRIO  = SECURE_PATH.concat(BASE_URL.concat("/crearBarrio"));
	final String UPD_BARRIO   = SECURE_PATH.concat(BASE_URL.concat("/actualizarBarrio"));
	final String DEL_BARRIO   = SECURE_PATH.concat(BASE_URL.concat("/eliminarBarrio"));
	
	final String LOCALIDAD   = SECURE_PATH.concat(BASE_URL.concat("/obtenerLocalidad/{idDepartamento}"));
	final String LIST_TABREF = SECURE_PATH.concat(BASE_URL.concat("/obtenerTablaReferencia/{tabla}"));
	
	final String LIST_PAISES = SECURE_PATH.concat(BASE_URL_PAIS.concat("/listPaises"));
	final String PAIS_BY_ID = SECURE_PATH.concat(BASE_URL_PAIS.concat("/paisById/{id}"));
	final String PAIS_BY_CODIGO = SECURE_PATH.concat(BASE_URL_PAIS.concat("/paisBycodigo/{codigo}"));
	
	final String LIST_MONEDAS = SECURE_PATH.concat(BASE_URL_MONEDA);
	final String MB_MONEDAS = SECURE_PATH.concat(BASE_URL_MONEDA.concat("/{id}"));
	
	final String LIST_NATURALEZAS = SECURE_PATH.concat(BASE_URL_NATURALEZA);
	final String MB_NATURALEZAS = SECURE_PATH.concat(BASE_URL_NATURALEZA.concat("/{id}"));
	
	final String LIST_FORMULARIOS = SECURE_PATH.concat(BASE_URL_FORMULARIO);
	final String MB_FORMULARIOS = SECURE_PATH.concat(BASE_URL_FORMULARIO.concat("/{id}"));
	
	public List<DepartamentoDTO> obtenerDepartamentos() throws IOException;
	public DepartamentoDTO obtenerDepartamento(String idDepartamento) throws IOException;
	public void crearDepartamento(DepartamentoDTO dto) throws IOException;
	public DepartamentoDTO actualizarDepartamento(DepartamentoDTO dto) throws IOException;
	public void eliminarDepartamento(Long id) throws IOException;

	public List<DistritoDTO> obtenerDistritos(Long idDepartamento) throws IOException;
	public DistritoDTO       obtenerDistrito(Long idDistrito) throws IOException;
	public void crearDistrito(DistritoDTO dto) throws IOException;
	public DistritoDTO actualizarDistrito(DistritoDTO dto) throws IOException;
	public void eliminarDistrito(Long id) throws IOException;

	public List<BarrioDTO> obtenerBarrios(Long idDistrito) throws IOException;
	public void crearBarrio(BarrioDTO dto) throws IOException;
	public BarrioDTO actualizarBarrio(BarrioDTO dto) throws IOException;
	public void eliminarBarrio(Long id) throws IOException;	
	
	public LocalidadDTO obtenerLocalidad(String idDepartamento) throws IOException;	
	public List<TabRefDTO> obtenerTablaReferencia(String tabla) throws IOException;
	
	public List<PaisDTO> listPaises() throws IOException;
	public PaisDTO paisById(Long id) throws IOException;
	public PaisDTO paisBycodigo(String codigo) throws IOException;

	public List<MonedasDTO> listMonedas() throws IOException;
	public MonedasDTO showMonedas(Long id) throws IOException;
	
	public List<NaturalezasDTO> listNaturalezas() throws IOException;
	public NaturalezasDTO showNaturalezas(Long id) throws IOException;

	public List<FormulariosDTO> listFormularios() throws IOException;
	public FormulariosDTO showFormularios(Long id) throws IOException;

}
